class CreatePurchases < ActiveRecord::Migration
  #采购申请
  def self.up
    create_table :purchases do |t|
      t.integer  :department_id                              #申请人所在部门ID
      t.integer  :applicant_id                              #申请人
      t.integer  :vendor_id                                 #中标人的ID或初选中标人
      t.integer  :offer_id                                  #中标的竞价记录

      t.string   :vendor_name                               #供应商名

      t.integer  :seq_number         , :default => 0        #流水号
      t.string   :order_number                              #单号
      t.integer  :purchase_type      , :default => 0        #申购单类别，0=>仪器设备，1=>办公家具

      t.string   :manager                                   #管理人
      t.string   :purchase_unit                             #申购单位
      t.string   :phone                                     #电话
      t.string   :mobile                                    #手机
      
      t.string   :funding_source                            #经费来源，可以暂时不用。用create_at即可。
      t.string   :funding_account                           #经费账号
      t.string   :funding_nature                            #经费性质

      t.date     :action_date                               #申购日期
      
      t.integer  :quantity                                  #申购的数量
      t.date     :supply_date                               #供货日期
      t.string   :supply_address                            #供货地址

      t.integer  :service_lift                              #使用年限，需用时间
      t.string   :sub_dept                                  #实验室，科室等下属部门
      t.integer  :category_id                               #产品分类ID

      t.string   :product_name                              #申购的产品名称
      t.string   :model                                     #型号
      t.string   :specification                             #规格
      t.string   :manufacturer                              #生产单位，厂商

      t.integer  :unit_price                                #单价
      t.integer  :estimated_price                           #预估单价
      t.integer  :estimated_amount                          #预估总额


      t.string   :brand                                     #产品品牌

      t.text     :qualification                             #技术指标
      t.text     :service_request                           #服务要求
      t.text     :reason                                    #理由，用途



      #入库与固定资产管理
      t.date     :entry_date                                #入库日期
      t.string   :entry_order_number                        #当日入库单号
      t.string   :invoice_number                            #发票号
      t.string   :is_import                                 #是否进口
      t.date     :produce_date                              #生产日期
      t.date     :purchase_date                             #购置日期
      t.string   :product_sn                                #产品出产编号
      t.string   :item_no                                   #设备编号
      t.string   :assignment_unit                           #分配单位
      t.string   :instruction                               #说明书
      t.string   :remark                                    #备注
      t.string   :is_entry       , :default => '否'         #是否入库，是，否。


      #供应商信息
      t.integer  :vendor_unit_price                         #供应商报的单价

      #部门审批
      t.string  :dept_auditing   ,  :default => '未审批'     #部门行政审批，未审批，通过，驳回
      t.string  :dept_reject                                #部门驳回原因
      t.integer :dept_leader_id                             #部门主管id


      #审批信息
      t.string  :auditing_status , :default => '未审批'      #初次审批状态，直接用中文描述
      t.integer :auditor_id                                 #申购管理部门审批人（设备科）
      t.string  :last_auditing_status , :default => '未审批' #申购管理部门高最负责人相关的审批状态。（提交招标）
      t.integer :leader_id                                  #申购管理部门高最负责人（设备处）
      t.string  :reject_reason                              #驳回原因

      #大额审查信息
      t.string  :check_status , :default => '未审批'         #大额审批状态，直接用中文表示
      t.string  :check_reject_reason                        #驳回原因

      #是否已发布
      t.string    :release_status, :default => '未发布'      #锁定 未发布，已发布
      t.date      :begin_date                               #截止日期
      t.date      :end_date                                 #截止日期

      t.integer   :offers_count, :default => 0              #用于记录投标的个数。
      t.integer   :low_price,    :default => 0              #用于记录是否有报价低于申购价。1为有，0为没有。

      t.string    :force_primary , :default => '否'         #不管条件如何，只要此标志位让审批者设置为1，即强行进入初选，则可以进入实行。
      t.string    :is_terminated , :default => '否'         #管理员强行终止流程。

      t.string    :is_primary             , :default => '否'        #是否已经初选
      
      t.string    :primary_status         , :default => '否'        #初选之审批人审批状态，默认是否，然后是通过，驳回
      t.string    :primary_audit_opinion                            #初选之审批人审批意见

      
      t.string    :is_acceptance         ,:default => '否'          #是否验收，是，否
      t.string    :acceptance_status                                #验收效果，通过，驳回

      #对于供应商本次的评价
      t.integer   :service_rating    ,:limit => 1 ,:default => 3    #服务评价
      t.integer   :quality_rating    ,:limit => 1 ,:default => 3    #质量评价
      t.string    :acceptance_opinion                               #验收意见

      #报账信息
      t.string    :is_account           ,:default => '否'           #是否报账，是，否
      t.string    :for_account_info                                 #报账信息

      t.integer   :is_locked     ,:limit => 1 ,:default => 0      #锁定 1为True 0为False
      t.integer   :lock_version  ,:default => 0                   #乐观锁
      t.timestamps
    end
  end

  def self.down
    drop_table :purchases
  end
end
